# 作业：
# 整理字符串、列表、字典、元组、集合可变和不可变的数据结构，背
# 1、定义两个字典，键值任意，把两个字典合并在一起，组成一个新字典
"""a = {"name":"好健康"}
b = {"age":95}
a.update(b)
print(a)"""


# 2、定义两个列表，将两个列表合并
"""list1 = [12,3,4,5,6]
list2 = [4,5,6,7]
list3 = list1+list2
list1.extend(list2) # 使用extend方法合并两个列表
print(list1)"""

# 3、定义一个集合，包含2，3，4，5，7元素，判断元素12在不在集合中，用分支语句打印不同结果； 判断元素3在不在集合中，打印结果
"""set1 = {2,3,4,5,7}
if 12 in set1:
    print(f"{12}在集合里面")
else:
    print(f"{12}不在集合里面")
if 3 in set1:
    print("3在集合里面")
else:
    print("3不在集合里面")"""


# 4、让用户输入账号密码，去除账号密码前后无用的空格，然后判断账号是不是admin，密码是不是123456，如果都相同显示登录成功，否则显示登录失败
"""username = input("请输入您的账号：").strip() # 去除空格
password = input("请输入您的密码：").strip() # 去除空格
if username == "admin" and password == "123456":
    print("登录成功！")
else:
    print("登录失败！账号或者密码不正确！")"""
# 5、实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
"""for i in range(3): # 循环三次
    username = input("请输入用户名：")
    password = input("请输入密码：")
    if (username == "seven" or username == "alex")  and password == "123":
        print("登录成功！")
        break
    elif i<2:
        print(f"账号密码错误，请您重新输入！还有：{3-(i+1)}次机会")
    else:
        print(f"账号密码错误，请您重新输入！无重试机会可用")"""
# 6、用程序计算100以内有多少个3的整数倍数字
"""count = 0
count_list = []
for i in range(3,101):
    if i%3==0:
        count_list.append(i)
        count+=1
print(f"从1~100中，3的整数倍数字有：{count}个，全部的数字为：{count_list}")"""

# 7、实现判断用户输入的内容中是否有c,要求最多输入三次
"""for i in range(3):
    r = input("请输入内容：")
    if ("c" or "C") in r:
        print(f"您输入的：{r}中包含了c")
        break
    elif i < 2:
        print(f"您输入的：{r}中不包含c，请您重新输入！您还有：{3-(i+1)}次机会！")
    else:
        print(f"您输入的：{r}中不包含c，三次机会用完，请您下次再来！")"""


# 8、让用户输入个人基本信息，包括 姓名、电话、住址、年龄，通过字典保存用户的数据信息，当用户输入q的时候，结束输入
# 结束输入后，打印显示全部的用户名，并要求选择一个名称然后打印输出这个用户的全部信息，输出信息的格式：用户 xxx，电话是xxx，地址是xxx，年龄是xxx
# dict_info = {} # 收集所有用户的信息为字典
"""
while True:
    print("欢迎来到客户管理系统！") # 打印输出
    print("请选择您要操作的服务：") # 打印输出
    print("①：用户信息新增") # 打印输出
    print("②：查看所有的用户信息")# 打印输出
    print("③：查看指定用户信息")# 打印输出
    print("④：退出系统")# 打印输出
    result = input("请输入您要操作的序号，按回车结束：") # 选择要操作的内容
    if result == "1": # 如果序号选择了1，那么就进行新增
        name = input("请输入要新增的用户姓名：") # 要输入新增的用户姓名
        if name == "q": # 如果用户只是输入了q，则退出当前新增的操作
            print("您这次只是输入了q，所以退出本次的新增") # 打印操作
            continue # 结束当前循环，继续下一次的循环
        if name in dict_info: # 判断用户姓名是否存在于用户字典里
            print(f"当前您要新增的用户姓名为：{name} 已经存在了，新增失败！") # 如果已经存在了，就告诉系统本次新增失败的
            continue # 结束当前循环，继续下一次循环
        phone_number = input("请输入要新增的用户电话：") # 要输入新增的用户电话
        if phone_number == "q": # 如果用户只是输入了q，则退出当前新增的操作
            print("您这次只是输入了q，所以退出本次的新增") # 打印
            continue # 结束当前循环，继续下一次循环
        address = input("请输入要新增的用户住址：")
        if address == "q":
            print("您这次只是输入了q，所以退出本次的新增")
            continue
        user_age = input("请输入要新增的用户年龄：")
        if user_age == "q":
            print("您这次只是输入了q，所以退出本次的新增")
            continue
        dict_info[name] = {"电话":phone_number,"住址":address,"年龄":user_age} 
        # 将用户信息存储到字典里面：{"好健康":{"电话":"1594381923","住址":"辽宁沈阳","年龄":95}}
        print(f"您输入的姓名为：{name}，您输入的电话为：{phone_number}，您输入的住址为：{address}，您输入的年龄为：{user_age}，用户新增成功！")
    elif result == "2":
        print("查看用户全部信息：\n")
        for key,value in dict_info.items():
            print(f"当前用户名为：{key}，用户电话为：{dict_info[key]['电话']}，用户住址为：{dict_info[key]['住址']}，用户年龄为：{dict_info[key]['年龄']}")
    elif result == "3":
        print("请选择您要查看的用户信息：") # 打印
        username = input("请输入您要查看的用户姓名：") # 用户输入姓名
        if username in dict_info: # 判断用户姓名在不在字典里
            for key,value in dict_info.items(): # 遍历访问，用key和value，items的方法
                if key == username: # 如果说当前的key等于我输入的username，就说名找到了这组键值对
                    print(f"当前您要查询的用户姓名为：{key}的，用户电话为：{dict_info[key]['电话']}，用户住址为：{dict_info[key]['住址']}，用户年龄为：{dict_info[key]['年龄']}")
                    
                    # {"好健康":{"电话":"1594381923","住址":"辽宁沈阳","年龄":95}}
                    # 找到的话就输出打印内容，dict_info["好健康"]，返回的是：{"电话":"1594381923","住址":"辽宁沈阳","年龄":95}
                    # dict_info["好健康"]['电话']，返回的是：1594381923
                    # dict_info["好健康"]['住址']，返回的是：辽宁沈阳
                    # dict_info["好健康"]['年龄']，返回的是：95
                    
        else:
            print(f"您要查询的：{username}没有在用户系统里存储！")
    elif result == "4":
        print("欢迎您下次光临！")
        break
    else:
        print("您输入的内容无法识别呢，请重新输入序号1或者序号2、序号3来操作呢")"""
# 9、图书管理系统
# 支持选项，选择功能
# 图书管理系统：
# 1.添加图书
# 2.删除图书
# 3.修改图书
# 4.查询图书
# 5.显示所有图书
# 6.退出操作
"""dict_books = {} # 收集所有的图书信息
while True:
    print("欢迎来到图书管理系统！\n请您输入要选择序号：\n①：添加图书\n②：删除图书\n③：修改图书\n④：查询图书\n⑤：显示所有图书\n⑥：退出操作") # 打印
    result = input("请输入序号：") # 输入序号
    if result == "1": # 如果输入的是1，可以进行新增图书
        book_name = input("请输入图书的名字：") # 输入要新增的图书名称
        if book_name in dict_books: # 判断，如果图书名称在图书字典里的话
            print(f"您要新增的图书名字：{book_name}已经存在！") # 打印图书已经存在了
        else:
            u = input("请输入作者名称：") # 输入作者名称
            cr_time = input("请输入创建时间：")# 输入创建时间
            u_name = input("请输入作者花名：")# 输入作者花名
            dict_books[book_name] = {"作者名称":u,"创建时间":cr_time,"作者花名":u_name} # 把这个字典加到图书字典里面去
            # {"大健康":{"作者名称":“郝健成”,"创建时间":"2025-3-28","作者花名":"wave"}}
            print(f"您要新增的图书为：{book_name}，创建时间为：{cr_time}，作者花名为：{u_name}，新增成功！")
    elif result == "2":
        book_name = input("请输入您要删除的图书名称：") # 输入图书名称
        if book_name in dict_books: # 判断图书名称在不在字典里面
            dict_books.pop(book_name) # 如果是在，那么就把这个key删除掉
            print(f"删除图书：{book_name}成功！") # 打印删除成功！ 
        else:
            print(f"输入的图书名称：{book_name}不存在！删除失败！") # 反之，就打印输出，图书删除失败，不存在！
    elif result == "3":
        old_book_name = input("请输入您要修改的图书名称：") # 输入要修改哪一个书的信息
        if old_book_name in dict_books: # 判断，如果说要修改的图书信息在图书字典里
            new_book_name = input("请输入新的图书名称：") # 输入新的图书名称
            dict_books[new_book_name] = dict_books[old_book_name] # 把它老的图书信息赋值成value
            del dict_books[old_book_name] # 卸磨杀驴，把老的删掉
        else:
            print(f"要修改的：{old_book_name}不存在，修改失败！")
    elif result == "4":
        book_name = input("请输入要查询的图书名称：") # 输入要查询的图书名称信息
        if book_name in dict_books: # 判断要查询的图书在不在
            print(f"要查询的图书名称为：{book_name},要查询的图书作者名称为：{dict_books[book_name]['作者名称']},要查询的图书创建时间为：{dict_books[book_name]['创建时间']},要查询的图书作者花名：{dict_books[book_name]['作者花名']}")
            # 如果在就打印输出
            # {"大健康":{"作者名称":“郝健成”,"创建时间":"2025-3-28","作者花名":"wave"}}
            # dict_books['大健康'] 图书名称
            #  dict_books['大健康'] ['作者名称']
            #  dict_books['大健康'] ['创建时间']
            #  dict_books['大健康'] ['作者花名']
        else:
            print(f"要查询的图书名称为：{book_name}不存在！")
    elif result == "5":
        for index,value in enumerate(dict_books):
            print(f"第{index+1}个图书名称为：{value}")
    elif result == "6":
        print("欢迎下次光临图书管理系统！")
        break
    else:
        print("输入的序号有误，请输入正确的序号！")"""
# 10、预设一个 0~9 之间的整数，让用户猜一猜并输入所猜的数，如果大于预设的数，显示“太大” ；小于预设的数，显示“太小” ，如此循环，直至猜中该数，显示“恭喜！你猜中了！ ”（使用random模块）
"""import random
ran_num  = random.randint(0,9)
while True:
    num = int(input("请输入您要猜的数字：")) # 转成整数类型
    if num < ran_num:
        print("输入的数字太小，再重新试试！")
    elif num > ran_num:
        print("输入的数字太大，再重新试试！")
    elif num == ran_num:
        print("恭喜你！你猜中了！")
        break"""

# 11、用户分别从键盘输入4个整数和3个整数组成两个列表list1和list2，将列表list2合并到list1中，并在list1末尾再添加两个数字90和100，然后对list1降序排列，最后输出最终的列表list1

"""num_1 = int(input("请输入列表a第一个数字"))
num_2 = int(input("请输入列表a第二个数字"))
num_3 = int(input("请输入列表a第三个数字"))
num_4 = int(input("请输入列表a第四个数字"))
list1 = [num_1,num_2,num_3,num_4]

num_1_1 = int(input("请输入列表b第一个数字"))
num_1_2 = int(input("请输入列表b第二个数字"))
num_1_3 = int(input("请输入列表b第三个数字"))
list2 = [num_1_1,num_1_2,num_1_3]

list1.extend(list2) #合并列表
list1.append(90)
list1.append(100)
list1.sort(reverse=True)
print(list1)"""

# 12、最后一个单词的长度
# 给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
# 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串

"""
len()  :统计字符串的长度
input("请输入字符出，每一个单词用空格隔开")：输入字符串
.split(' ')：按照空格进行分割，返回的是一个列表
[-1]：返回列表的最后一个字符串
"""
"""str1 = "asd qwe qwewqeasd asdasqwsa asd"
print(str1.split(" ")) # [asd,qwe,qwewqeasd,asdasqwsa,asd]
print(str1.split(" ")[-1]) # asd
print(len(str1.split(" ")[-1])) # 3"""
# print(len(input("请输入字符出，每一个单词用空格隔开").split(' ')[-1]))  # 合入到一起，就是这句话
# 13、编写一个程序，要求用户输入一个字符串，并将其反转输出
# print(input("请输入字符串")[::-1]) # [::-1] 翻转
# 14、编写一个程序，要求用户输入一个整数，判断它是奇数还是偶数，并输出结果
"""num = int(input("请输入一个整数"))
if num%2==0:
    print(f"您输入的数字：{num}是偶数")
elif num%2!=0:
    print(f"您输入的数字：{num}是奇数")"""


# 15、编写一个程序，计算并输出 1 到 100 之间所有能被 7 整除但不能被 5 整除的数的和
sum = 0
for i in range(1,101):
    if i%7==0 and i%5!=0:
        sum+=i
print(f"计算并输出 1 到 100 之间所有能被 7 整除但不能被 5 整除的数的和为：{sum}")


# 16、输入任意三个数，用if语句编写求出其中最小值的程序
"""num1 = int(input("请输入数字1"))
num2 = int(input("请输入数字2"))
num3 = int(input("请输入数字3"))
min = num1
if num2 < min:
    min = num2
elif num3<min:
    min = num3
print(f"最小值是：{min}")"""


# 17、两数之和
# 给定一个整数数组 nums和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那两个整数，
# 并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案
nums = [2,3,12,99,120]
target = 15
result = set()
for i in range(len(nums)):
    for j in range(len(nums)-i):
        if nums[i] + nums[j] == target:
            result.add(i)
            break
print(result)

# 18、listinfo = [133, 88, 24, 33, 232, 44, 11, 44]，取出列表小于100，且为偶数的数
listinfo = [133, 88, 24, 33, 232, 44, 11, 44]
l = []
for i in listinfo:
    if i<100 and i%2==0:
        l.append(i)
print(l)


# 19、从键盘上输入任意一个整数，输出这个整数是几位数
s = input("请输入数字")
print(len(s))

# 20、定义一个字典包含“name”、“age”两个key，对应的值为“韩梅梅”, 33，
#  将“name”对应的value值改为“韩涛”
# 添加新的键“sex”，值为“男”
#  将“age”键值对删除
dict1 = {"name":"韩梅梅","age":33}
dict1['name'] = "韩涛"
dict1['sex'] = "男"
del dict1['age']

# 21、编写程序，定义一个列表，通过索引打印出列表中第2个值，删除列表中的第3值
list2 = [1,2,3,4,5]
# 1. 通过索引打印出列表中第2个值
print(list2[1])
# 2. 删除列表中的第3值
list2.pop(2)


